冯若航:不想当段子手的技术狂,不是一位好的开源创始人
【墨天轮风云人物访谈录】https://www.modb.pro/topic/569382
导读: 近日,数据库行业的一场历史性的辩论引起热议。数据库界的“王牌辩论手”—— 90后创业者冯若航进入大家的视野,他为何会参加此类可能会“引战”的技术辩论活动?他对数据库未来发展有哪些看法?本次专访邀请到他,就其技术人生、数据库的热点话题展开聊聊!
磐吉云数创始人 —— 冯若航
简介: 磐吉云数创始人,开源 RDS PG 替代 —— Pigsty 作者。PostgreSQL专家与全栈开发者,开源贡献者,PostgreSQL中文社区技术委员会委员,墨天轮MVP;PostgreSQL ACE;曾任职于阿里巴巴、探探,Apple,译著有《PostgreSQL指南:内幕探索》与《设计数据密集型应用》。
—— 以下为采访全文 ——
一、您与数据库行业是如何结缘的?怎么会突然萌发创业的念头?
冯若航:读书时我的兴趣其实在AI上,搞些神经网络/元胞自动机之类的花活,入行时做的也是算法工程师。不过我很快发现搞AI的核心其实还是数据,或者说 —— 整个信息系统都是围绕并服务于数据库这个核心的,于是,我就开始折腾起数据库来了。
我毕业最开始在阿里/友盟搞数据研发/数据分析,然后沿着前端、后端一路折腾下来。后来我当架构师带项目可以选型了,就借这个机会尝试了很多种数据库,最后发现 PostgreSQL 这个数据库太牛逼了,前途无量,于是就决定 ALL IN 这个方向。
后来我去了探探,因为那里有国内规模前几的 PostgreSQL 部署。这个北欧风的创业公司很有技术品味,我从一堆老派瑞典工程师那儿学了不少新花样。像 Linux / MySQL 这样的开源项目很多是从北欧诞生其实是有原因的 —— 这里的工作氛围相当悠闲,可以使劲折腾新技术。我开始研究 PG 内核,翻译了两本书,最后开始搞起数据库管控来 —— 也就是 Pigsty。
做 Pigsty 的初心很简单:把自己作为 PostgreSQL DBA 的工作尽可能自动化掉,让自己的摸鱼能力更上一层楼,在这一点上它做的很成功。但我意识到它其实可以走得更远 —— 于是便将其开源出来,并旨在成为 RDS for PostgreSQL 的开源实现。
一个足够好用的开源软件,能立竿见影地提高 PG 社区与全球用户的生产力,甚至最终颠覆掉云 RDS 的存在 —— 熊彼特所说的“创造性破坏”。很快,一些外部用户也开始尝鲜 Pigsty 并给出反馈,也有不少人问我有没有咨询和兜底服务 —— 终端用户的需求让我看到了这里的机会,从而萌生了创业的想法。
延伸阅读:《90 后,辞职创业,说要卷死云数据库》
二、2022年,Pigsty完成种子轮融资。作为免费的开源软件,商业模式是怎样的呢?
冯若航:让我决定全职出来创业的契机是奇绩创坛的助力:无心插柳投了一下,却从五千多个项目中卷了出来,拿到了种子轮投资。这种机会非常难得,能让我有机会去做自己真正想做、真正有意义的事。既然有天使打钱支持,我也没理由不上对不对?
创业当然要有商业模式,但 Pigsty 本身是一款完全免费的开源软件,所以我们并不靠卖软件产品赚钱。实际上我认为开源是反商业模式的:把软件知识产权放入公共领域算哪门子的商业模式?开源不是商业模式,而是全球协作的软件研发模式。然而,软件的价值是在其使用过程中,而并非研发过程中实现的。
开源不是商业模式,但基于开源软件提供服务却是一种切实可行的商业模式 —— 公有云的成功有力地证明了这一点:只需要把开源软件运行好维护好管理好,就能攫取软件生命周期中的绝大部分商业价值。而我们提供了公有云 RDS for PostgreSQL 的开源替代 —— 让用户在任何地方都能用 RDS 十分之一甚至更低的纯硬件成本,快速自助搭建起比肩/超越 RDS 的数据库服务。
Pigsty 之于 PostgreSQL,就像 RedHat 之于 Linux。软件开源免费,服务订阅收费。开源的管控软件也许可以自动解决 80% 的高频日常运维性事务,可低频却致命的疑难杂症兜底还是需要专家来兜底。我们便是为有需要的用户提供这样的服务。后面我们也会尝试在公有云市场上销售数据库监控 SaaS,以及开箱即用的镜像与托管服务。
延伸阅读: 《更好的开源 RDS 替代:Pigsty》
三、作为一名 PG 资深从业者,如果让您用三个关键词来描述 PostgreSQL 的差异化优势,您认为是哪三个?
冯若航:开源,先进,扩展。
“开源”让 PostgreSQL 和所有商业数据库区分开来;“先进”让 PostgreSQL 和 MySQL/NoSQL 区分开来;“扩展” 则是 PostgreSQL 的醍醐味,独一无二的特色。开源与先进是 PostgreSQL 的基本盘,这直接体现在其 Slogan 里面:“世界上最先进的开源关系型数据库”。在数据库领域的三国演义中:Oracle 先进, MySQL 开源,而 PostgreSQL 先进又开源。
开源和先进的部分我写过很多了,所以这里我想特别提一下扩展,PostgreSQL 的可扩展机制与插件系统,让它不再仅仅是一个单线程演化的数据库内核,而可以有无数并行发展的支线,像量子计算一样同时探索各种方向上的可能性。每一个数据处理的细分垂直领域 PG 都不会缺席。就好比最近向量数据库领域大火,别的数据库都还没反应过来,PG 生态立刻就涌现出好几个相关插件,以迅雷不及掩耳之势抢占了这一块生态位。
PostgreSQL 是一专多长的全栈数据库,天生就是 HTAP,超融合数据库,基本单一组件便足以覆盖中小型企业绝大多数的数据库需求:在关系型 OLTP 上对标 Oracle/MySQL,有 JSONB/GIN 对标 MongoDB,有 PostGIS 对标地理空间数据库,有 TimescaleDB 来对标时序/流数据库,有 Citus 来对标分布式/列存储/HTAP数据库,有全文检索来对标 ElasticSearch,有 AGE/EdgeDB 来对标图数据库,有 pgvector 来对标专用向量数据库。这些惊人的多模态能力,正是源自PG的扩展能力。
在一个相当可观的规模内,PostgreSQL 都可以独立扮演多面手的角色,一个数据库当多种组件使。更美妙的是,这些扩展的能力可以融合在一起,发挥1+1远大于2的效果来。单一数据组件选型可以极大地削减项目额外复杂度,节省大量成本与开发时间。如果真有那么一样技术可以满足你的各种数据需求,那么使用它就是最佳选择,而不是试图用多个组件来重新实现它。
延伸阅读: 《PostgreSQL:世界上最成功的数据库》
四、前一段时间 MySQL 和 PG 主题辩论活动,可谓是数据库行业中一场历史性论战。有人说“技术的好坏不是靠辩论出来的。”您为什么会参加这类可能会“引战”的技术辩论活动?这背后有着怎样的故事?您参加完后最大的感想是什么?
冯若航:技术的好坏本身确实不靠辩论,但辩论会让技术的优劣得以彰显:公开辩论会让“共有知识”转变为“公共知识”,凝聚共识 —— 而这对于开源软件的生态发展是极其重要的。
在这次辩论中,我认为有几个共识是沉淀下来的:在势能上,PostgreSQL 在 MySQL 的基本盘“流行”上超越了 MySQL。成为世界上最流行的数据库;在动能上,PostgreSQL的功能/产品力全方位碾压了 MySQL;即使是 MySQL 的专家也无法否认这些,那么结论其实就很明显了 —— PostgreSQL 就是版本答案。
关于引战,我认为这并不是一件坏事 —— 真理越辩越明,群众的眼睛是雪亮的。越是能打的越不怕打,打不动的才会高挂免战牌。而且大家的时间都很宝贵,与其当个好好先生,说些正确而无用的车轱辘废话,还不如痛快地亮出自己的观点 —— 你注定无法讨好所有人,骑墙没有好结果。
技术在某种意义上与宗教有相似之处,你的佛法福音再精妙,也要有僧侣去传教不是吗?当技术的生态位发生碰撞时,冲突是难以避免的。你可以不去主动引战,但是当别人打上门来的时候,社区里必须要有人敢于站出来扛事,直面挑战。
我的感想是:要想有一场精彩的辩论战,你需要的是实力与人品相当的对方辩友。某 MySQL 辩友不太体面,但正所谓一黑顶十粉:如果对方只能长篇大论质疑P5架构师一类细枝末节,但不敢做任何产品、技术、业务硬碰硬的PK,那其实就是变相说明 PostgreSQL 和 Pigsty 已经无懈可击了。
延伸阅读: 《如何看待 MySQL vs PGSQL 直播闹剧》
五、您的公众号有多篇文章都是关于“下云”的,您为何会倡导“下云”?
冯若航:经济下行,降本增效成为主旋律。下云以削减高昂的云开支,也被越来越多的企业提上日程。
我认为,公有云有其存在意义 —— 对于那些非常早期、或两年后不复存在的公司;对于那些完全不在乎浪费钱、或者真正有着极端大起大落的不规则负载的公司;对于那些需要出海合规,CDN等服务的公司,公有云仍然是非常值得考虑的服务选项。
但对绝大多数已经发展起来,有一定规模的公司来说,如果能在几年内摊销资产,你真的应该认真重新审视一下这股云热潮。好处被大大夸张了 —— 在云上跑东西通常和你自己弄一样复杂,却贵得离谱。我作为资深甲方,对这把杀猪刀有过切肤之痛,能算明白这个帐,所以我也建议您仔细审阅一下自己的云账单。
最近十年间,硬件以摩尔定律的速度持续演进,IDC2.0与资源云提供了公有云资源的物美价廉替代,开源软件与开源管控调度软件的出现,更是让自建的能力变得唾手可及 —— 下云自建,在成本,性能,安全,自主可控上都会有显著的回报。
下云有实打实的实际利益 —— 无论是对于用户本身还是我们自己。我们提倡下云理念,并提供了切实可行的实践路径,与关键的 RDS 数据库服务自建替代品 Pigsty —— 我们将为认同这一结论的追随者,提前铺设好技术方案与意识形态上的道路。
更重要的是意识形态原因 —— 我们希望所有用户都能拥有自己的数字家园,而不是从科技巨头云领主那里当租用农场。云原生/本地云 —— 这也是一场对互联网集中化与反击赛博地主垄断收租的运动,让互联网 —— 这个美丽的自由避风港与理想乡可以走的更长远。
延伸阅读: 《云计算泥石流合集 —— 用数据解构公有云》
六、从技术层面看,国产数据库目前处于国外数据库哪个阶段的水平?请您设想一下,未来20-30年后,国产数据库的竞争格局是怎样的?您目前看好哪一些国产数据库?
冯若航:对于中国公司主导的 OLTP 数据库内核,我个人的判断是与世界顶尖水平存在 10 年左右的差距。例如,在全球搜索引擎趋势榜上,可以显著地观察到 MySQL / PostgreSQL 这两个世界最流行数据库的波形趋势在中国有一个十年左右的滞后。比如,全球 MySQL 流行度下降趋势从 04 年开始达峰下降,结果到了中国反而在 14 年突然火了起来,然后再达峰进入下降通道。
很多主流国产数据库内核都是基于开源数据库内核改的,比如 OpenGauss 基于2012 年发布的 PostgreSQL 9.2 进行分叉,PolarDB 参照 2014 年的 Aurora 在 PG 11/14 上进行修改。此外还有大量基于 PG 9.x,PG XC,PG XL 的各种国产换皮套壳魔改。再考虑到 PostgreSQL 本身与 Oracle 的距离,各种 NewSQL 与 Google Spanner 的距离,我认为滞后世界顶尖水平 5 - 15 年是较为公允的说法。
如果上面的判断成立,那么我们就可以用当下全球的数据库竞争格局来推断中国十年后的数据库竞争格局。我认为当下全球数据库生态中里程碑式的事件,就是 PostgreSQL 超越 MySQL 成为最流行的数据库,而且还保持着巨大的增长动能。我认为数据库领域即将迎来 Linux 时刻:PostgreSQL 成为数据库领域的 Linux 内核,而真正的竞争会发生在 PostgreSQL 数据库发行版上。
我看好那些充分利用开源内核力量,打造发行版与服务体系,做有价值实事的公司与产品。我不看好那些选择硬分叉的产品/或者更极端的“自研内核” —— 跟全球社区开发者掰腕子,往往是越努力越落后。更何况,国家追求的基础软件自主可控是运维自主可控 —— 维持现有/增量系统稳定运行,而不是华而不实的“自研“。
追求自研必须考虑活性问题。事务型数据库领域已经存在成熟开源内核了,在基础软件领域追求所谓 内核自研 对于国家与用户来说几乎没有实用价值。只有当某个团队功能研发/问题解决的速度超过全球开源社区,内核自研才是有实际意义的选择。绝大多数号称“自研”的基础软件厂商本质是套壳、换皮、魔改开源内核,活性极其有限,自主可控程度还不如直接用开源的数据库内核/发行版 —— 起码不会被一家公司锁死。
低质量的软件分叉不但没有使用价值,更是浪费了稀缺的软件人才与市场机遇空间、并终将导致中国软件行业与全球产业链脱节,产生巨大的负外部性。越是民族的越是世界的,靠垄断保护可以在国内窝里横得意一时,但拉长到20~30年的尺度上,真正有价值的国产数据库,还是那些靠硬实力吃饭,能在全球市场杀出血路,赚到外汇/用户/影响力的产品。
延伸阅读: 《基础软件需要什么什么样的自主可控?》
七、新技术的层出不穷使数据库焕发出新的活力 ,您认为数据库未来会朝着哪些方向发展?
冯若航:又好又快,省事省钱。或曰:质量、安全、效率、成本。
好说的是质量/功能,快说的是性能/效率,省事说的是易用/安全,省钱说的是价格/复杂度。好用这件事上,我看好多模态数据库。效率这件事上,我看好软硬件结合,看衰分布式NewSQL。省事这件事上,我看好声明式 IaC 与 DBA 大模型,谨慎看待 OLTP 数据库进 K8S。省钱这件事上,我看好本地优先/云原生运动,看衰公有云PaaS/FinOPS。
我认为 OLTP 数据库属于工作性记忆,而工作记忆的特点就是功能丰富,小而快。即使是非常庞大的业务系统,同一时刻活跃的工作集也不会特别大。OLTP 系统设计的一个基本经验法则就是:如果你的问题规模可以在单机内解决,就不要去折腾分布式数据库。TP数据库内核应该发力的方向是多模态,丰富功能 —— 像 PostgreSQL 这样什么都能做,单一组件即可覆盖几乎所有数据需求的数据库,而不是一个支持海量数据却只能干 CRUD 的分布式数据库 。
在效率上,针对吞吐量/容量进行优化是一条歪路 —— 这主要是硬件要干的活儿,而且人家干的相当不错:磁盘的性价比遵循摩尔定律在十年内提高了三个数量级,以至于现在几乎没有哪个TP数据库能充分利用好 Gen4 / Gen5 PCI-e NVMe SSD 单卡64T / 百万级 IOPS 的恐怖性能。硬件的变革让集中式数据库的容量与吞吐达到一个全新高度,并使分布式(TP)数据库在绝大多数场景下失去存在意义,成了一个伪需求。
我认为现有数据库软件在易用性上仍然有很大提升空间 —— DBMS内核离开箱即用还差的太远,仍然需要DBA专家进行精心照料,或者一个足够好用的管控软件。一个控制系统由感知、决策、执行三个子系统组成,所以我认为这里会有三个重点方向:在可观测性上,需要一个强大的监控系统提供数据支持;在可控制性上,需要使用声明式的 Infra as Code 来简化管理复杂度;而在决策模型上,人工智能为我们提供了一个极具吸引力的愿景:LLM as DBA。
此外,数据库的定义也会发生嬗变:我们现在所说的“数据库”通常指“DBMS”,是用来管理DB的软件。然而DBMS现在本身也成为了软件所管理的对象 —— 许多原本由人来完成的运维性工作逐渐被管控软件完成。慢慢就像操作系统一样,原有的DBMS变成了所谓的数据库内核(Kernel),而数据库开始指代数据库发行版与管控软件。我相信数据库的未来会类似于操作系统的现在:在几个开源内核周围演化出百花齐放的发行版来。
延伸阅读: 《分布式数据库是不是伪需求?》/《技术反思录——数据库正本清源》
八、作为一名数据库从业者,不管是数据库内核研发还是DBA,想要在自己的领域取得成就,您认为最重要的是什么?
冯若航:我认为最重要的是顺势而为。
时来天地皆同力,运去英雄不自由,讲的就是要顺势而为。当下数据库领域的势是什么?PostgreSQL 即将迎来 Linux 时刻,但还未出现具有类似于 Ubuntu,Redhat,SUSE 这样的主导发行版。当下数据库领域的主要矛盾已经不是缺少更好更强大的新内核,而是极度匮乏用好管好现有数据库内核的能力 —— PostgreSQL 已经是一台足够完美足够好用的发动机了,但用户需要的是开门即走的整车,这对于DBA来说是一个历史性的机会。
数据库内核开发者是研发领域的专家,而DBA则是应用与管理领域的专家。没有应届DBA —— 真正的开源数据库DBA都是从资深的研发/运维堆里用无数真金白银的故障砸出来的。最会开车的人是赛车手,而不是车厂工程师,最会射击的人是狙击手,而不是枪械设计师;最会演奏的人是钢琴家,而不是钢琴调音师。用好/管好数据库这件事,DBMS/数据库内核厂家通常无能为力,只有资深的甲方用户与真实世界的复杂的场景才能磨练出这种经验。在数据库发行版/服务这件事上,DBA要比数据库内核研发者更有发言权。
顺势而为,关键在“有为”。智慧帮你认清形势,而勇气才能让你有为。智慧是一种重要的品质,它能帮助你拨开迷雾,看清未来的道路,指引你做出正确的选择。但勇气才是最稀缺的品质:不论是讲真话的勇气,挑战权威的勇气,打破现状的勇气,下注ALL IN的勇气,躬身入局者永远是极少数。要想成就一番事业,勇气与智慧两者缺一不可。
延伸阅读: 驳《再论为什么你不应该招DBA》
九、有人说您是“技术界的段子手,段子手中的技术狂”,您怎么看待这个评价?
冯若航:我觉得这个评价说的挺好。我很敬佩 Linus 与 Jobs ,前者是顶级技术狂(Hacker),后者是顶级段子手(Story Teller),而我自然会受到偶像的影响,在这两个方向进行加点。
设计软件系统,改造开源生态对我来说是一种兴趣与娱乐,而不是糊口的工作。正如 Linus 自传 《Just for Fun》所言:“生存、秩序、娱乐”。虽然我出生比较晚,不太可能搞出像 Linux 和 PostgreSQL 这样的项目了,但是做一个 Debian / RedHat 的 PostgreSQL 发行版还是有可能的。而这件事抛开使用价值与经济价值不谈,本身就是一种类似于“创世”一般的极致娱乐。
故事有着凝聚人心共识的力量,可以说人类社会/国家都是靠故事所凝聚起来的。讲好故事是一种稀缺的能力,而 Jobs 绝对是此中顶级高手。要想演讲获得成功,精心设计好符合认知结构的故事线非常重要,大量的练习更是必不可少。例如我在公众号中写过很多文章,都是按照演讲稿的标准进行的,这其实就是一种刻意进行的讲故事能力锻炼。
子曰:“质胜文则野,文胜质则史。文质彬彬,然后君子”。技术高,段子硬,又高又硬才是硬道理。
延伸阅读: 《Pigsty路演三分钟》
十、关于 PostgreSQL 数据库,您推荐如何学习?
冯若航:我推荐 Learn by Doing,做中学。
学数据库的原则是学以致用。只有实践,才能带来对问题的深刻理解;只有先知其然,才有条件去知其所以然。教材和书籍可以速览过一遍,然后直接看数据库文档,上手去把数据库用起来做个东西出来。有真实需求场景当然是最好的,没有条件那最好的办法就是自己创造场景,自己挖掘需求。
例如,你可以做个知识库语义搜索:这就会用到 pgvector 的向量能力;你要做一个照片打卡应用,那么就可以把 PostGIS 地理空间功能给用起来;你要做一个全球气象数据分析,那么 TimescaleDB 的功能就可以帮到你。你要做一个 IP地理查询,那么就会用到自定义范围类型和操作符类;你要做一个商品/人群标签圈选应用,那么数组/JSONB/倒排GIN索引就有用武之地。大道至简,活用 PostgreSQL 的功能,研发可以做到一行 SQL 抵过千言万语。
对于运维管理来说,最佳的学习方法就是参考业内的架构最佳实践。例如我们就把自己在大规模的生产环境中应用的架构完全开源了出来 —— 也就是 Pigsty。研究 Pigsty, 你可以学会主机参数调优,主从搭建,高可用配置与自动故障切换,连接池的管理,备份与恢复的细节,负载均衡器的使用与流量管理,读写分离,分库分表等。Pigsty独一无二的监控系统更是提供了一套完整的PostgreSQL认知框架,可谓研究数据库性能问题与故障排查的终极杀手锏。
自学入门的话,除了官方文档外,我推荐《PostgreSQL从小工到专家》与 《PostgreSQL实战》这两本书。当然,荀子曰:“吾尝终日而思矣,不如须臾之所学也”。有老师领路和自学的效果也是不一样的,PostgreSQL 中文社区每周都有公益培训与分享,我们也提供专业的 PostgreSQL 培训(应用、运维、原理)供有需要的用户选用。
当然,兴趣才是最好的老师。如果你能明白“为什么”我要学 PostgreSQL,我相信“怎么办”这件事肯定难不倒你。
延伸阅读: 《为什么要学数据库原理?》